public class ReadMe {
    /**
     * 2022-12-26 JavaScript基础
     * 1.将第一阶段的数据
     * 2.页面上的数据，应该单独提取出来，第四阶段最终将数据转换为json对象传递给前端
     * 3.我们需要将页面上的数据直接封装成json对象即可
     * 4.需要将页面的数据进行提取到json对象，那么需要分析页面有多少个对象
     * 5.编写页面对象
     * -------------------------------
     * 前端赋值：
     * 前端一般情况下都是基于js进行赋值
     * 1.需要jquery.js
     * 2.创建当前页面对应的js  top.js
     * 3.jquery.js一定要在top.js之前
     * 4.$("#logo").attr("src","../img/logo_g0yv.jpg");
     * ------------------------------------
     * 将页面的数据全部封装到js里面
     * 封装到这里面每次修改需要修改代码，不方便，则将数据提取出来
     * ------------------------
     * 1.数据的定义
     *      let phone="139888888";
     *      let company={phone:phone,address:"四川省成都市"}
     * 2.方法的定义
     *      function  setCompanyData（data）{}
     * 3.调用方法
     *       setCompanyData(res.data);
     * 4.ajax的使用
     *      $.ajax({});
     * 5.页面加载完成执行里面的代码
     *      $(function(){});
     * 6.json文件的定义：company.json 里面的key和value都需要双引号括起来
     * 7.js和Java差不多，都应该按照面向对象的方法来理解
     *      1）一个方法里面只做一件事情
     *      2）一个js里面也是做一件事情
     * 8.js的字符串拼接
     * 9.对象的取值  对象.属性名
     */
    /**
     * 2023-1-12 前端页面赋值
     * 1.前端页面的创建
     * 2.页面加载完成的时候获取后台的数据
     * 3.ajax来获取  url:'/index'
     * 4.赋值给前端页面
     * -------------------
     * 后端的逻辑和以前一样：
     * 1.servlet  六大步骤  @WebServlet("/index")
     * 2.service
     * 3.dao
     * ------------------------------------
     * ----------------------------------------
     * 1.model 指Java后台service传递到dao层的对象
     * 2.dto 是指Java后台传递到前端的对象 只能存在于servlet层
     *          data  Transfer（传输） object
     * 3.vo  是指前端传递到后台的对象  View Object
     *          在servlet里面接收前端传递的数据并封装
     *          然后将数据发送到service层
     *------------------------------------------------
     * 以后，实体类要严格区分开来
     * 1.对于新闻或者产品等 可以写一个发布时间
     *      当用户（非管理员）查询新闻时，应该查询到已经发布的新闻而不是创建的新闻
     *      select * from news where publish_time<now();
     *--------------------------------------------------
     * 今日任务：将前端首页的数据查询出来打印到控制台
     * 难点：
     * 1.dto的使用，
     * 2.vo的使用
     * 3.service vo转换为model，model转换为dto？为什么要转换？
     * 4.为了隐藏细节，不需要将所有字段暴露给前端
     *
     */
    /**
     * 2023-1-13 前端页面js赋值
     * 1.object的关系
     *      VO 只存在于servlet和service
     *          servlet 用于接收签到传递的数据并封装，然后以参数的形式放入service
     *          service 将vo里面的数据copy到model里面去
     *      model 只存在于service和dao
     *          service 用于接收vo的数据和将model的数据copy到dto里面
     *          dao 用于接收service的数据和将数据库的数据封装到model
     *      DTO 只存在于service和servlet
     *          service  用于将数据库查询的数据copy到dto里面去用于页面展示
     *          servlet 主要用于传递到页面展示的数据
     * -----------------------------------------------
     * 2.前端页面赋值的时候也应该按照面需对象的思路来处理
     * 3.前端页面 后台代码：
     *      一个页面一个servlet 可以有无数个对象
     *      一个对象一个service一个DTO一个VO一个model一个dao
     * 4.假期作业：
     *      1）验收后台管理系统
     *      2）验收前端页面静态展示数据：不做跳转
     *
     * 1.模块要求（公司，用户，导航，新闻，新闻栏目，产品，产品菜系，留言）
     * 2.前端页面数据来源于数据库
     * 3.用户，新闻，产品需要做模糊查询和分页，其他可不做
     * 4.Session安全认证，必须登录才能对数据进行操作
     * 5.代码格式，命名是否规范，注释是否明确
     *
     */
    /**
     * 2023-1-31 前端页面跳转与逻辑关系
     * 1.页面跳转
     *      1）用onclick事件进行跳转
     *      2）跳转时，需要将当前产品的id传递到另一个页面
     * 2.Java后台根据id查询应该得到3条数据
     *      在前端页面赋值时分3中情况
     *      1）如果只有一条数据，则没有上一条和下一条
     *      2）如果有三条数据，则分别显示即可
     *      3）如果有两条数据，则又分两种情况
     *          1）当前id和查询出来的数据第一条id相等，则没有上一条
     *          2）如果和第二条数据相等，则没有下一条数据
     * 3.在查询id之前，应该先将菜系查询出来，
     * -----------------------------------------------
     * 今日知识点：
     * 1.页面跳转：windows.open("url","target");
     * 2.页面之间传递数据
     * 3.查询当前页面的菜系信息，赋值到页面
     * 4.根据当前产品id查询出三条相关信息，并进行逻辑处理
     * 5.最后在赋值当前数据时，需要对菜系进行颜色的设置（先清空在设置）
     * 6.对于上一条和下一条可以点击，则本质也是拿到id进行查询三条数据，则直接访问findById(id)
     * 7.对于菜系，要指定某一个div，则对div设置id，id根据不同的数据库里面的id进行拼接
     */
    /**
     * 2023-2-1 点击菜系跳转到产品页面
     * 1.在加载菜系时，对菜系进行点击事件
     * 2.要进行跳转，同时，带一个菜系id到产品页面
     * 3.前端逻辑
     *      1.加载菜系
     *      2.根据菜系查询数据
     *      3.展示数据完成后，显示菜系背景
     * 4.分页：可以用layui的分页，也可以自己写一个分页
     */
    /**
     * 2022-2-2 redis基础
     * 1.产品页面分页思路
     *      1）页面加载完成，显示所有菜系：
     *      在每个菜系里面添加一个点击事件，可以点击后直接查询当前菜系的产品
     *      每次点击的时候，都是显示的第一页
     *      2）加载菜系完成后，根据菜系id取后台查询当前菜系的产品
     *      产线产品之前，需要得到当前产品的总条数，因为有分页
     *      得到总条数后，再去查询产品
     *      产线产品时，需要同时传递第几页和菜系id
     *      3）产线完产品后，取赋值
     *      4）赋值完产品后，还需要对当前菜系的背景进行修改
     *      先将所有菜系的背景设置为默认
     *      然后拿到某一个对应的菜系进行设置样式
     * 2.redis 学习思路
     *      1）redis是什么？什么技术
     *      2）redis为什么要用？有什么优势？
     *      3）redis的使用场景？哪些地方还可以用？
     *      4）redis的使用方法？怎么应用于项目
     * 3.应用于项目：
     *      1）产品如果某一时刻被很多人访问
     *      2）如果是mysql，则每次都会访问数据库（如果数据量大，则会报错，太多链接）
     *      3）那么就不能全部访问数据库，只能第一个人访问数据库，其他人不能访问
     *      4）那么其他人的数据从哪个地方来？
     *      5）第一个人访问后应该将数据保存在某个地方，其他人直接取即可
     *      6）保存的数据应该具有持久化，而且取的时候不影响其他功能或者性能（redis）
     *      -----------------------------------------------
     *      List<ProductModel> list=null;
     *      for(int i=0;i<10000;i++){
     *          if(i==0){
     *              list=productDao.findAll();
     *          }else{
     *              list=redisData();
     *          }
     *      }
     *      --------------------------
     *      CompanyDTO dto=null;
     *      boolean isHave=redis.exists("company");
     *      if(isHave){
     *          dto=redis.get("company");
     *      }else{
     *          dto=Tool.copy(companyDao.getCompanyModel(), CompanyDTO.class);
     *      }
     *      return dto;
     *      -----------------------
     *      怎么拿到redis对象？
     *      引入redis的jar包
     *      -----------------------------
     * 4.如果管理员在后台管理系统修改了公司信息，
     *      那么刷新前端页面时，要保证前端页面数据最新？
     *      要保证页面拿到最新数据，则需要查询数据库，
     *      就必须删除redis里面的key值(在后台管理系统更新成功后删除对应的key即可)
     *------------------------------------------------------------------
     * 5.如果是String 后面再次对key进行赋值会覆盖以前的数据
     *      jedis.del("logo");
     *   如果是list，后面再次对key赋值会追加到list后面
     *      jedis.del("titleList","hrefList");
     * 6.要清楚哪些地方需要用到redis？
     *      分页如果用redis，只做第一页即可
     *
     *
     */

}
